/**
 * 饿汉式单例在类加载初始化时就创建好一个静态的对象供外部使用，
 * 除非系统重启，这个对象不会改变，所以本身就是线程安全的。
 * Singleton通过将构造方法限定为private避免了类在外部被实例化，
 * 在同一个虚拟机范围内，Singleton的唯一实例只能通过getInstance()方法访问。
 */
public class HungryMan {
    //创建该类的静态实例化对象
    //由于该对象为static修饰则该类的对象在jvm中只有一个对象
    private static HungryMan single = new HungryMan();
    //私有化构造方法防止外部类对该类进行实例化
    private HungryMan(){

    }
    //根据共有方法访问私有变量返回该类的实例化对象
    public static HungryMan newInstance(){
        return single;
    }

    public static void main(String[] args) {
        //静态修饰类，对象可直接调用方法
        HungryMan hm01 = HungryMan.newInstance();
        HungryMan hm02 = HungryMan.newInstance();
        System.out.println(hm01);//HungryMan@1b6d3586
        System.out.println(hm02);//HungryMan@1b6d3586
    }
}
